package com.gp.learn.ssm.base.core.mybaits.interceptor;


import com.gp.learn.ssm.base.core.mybaits.Entity.EntityMap;
import com.gp.learn.ssm.base.core.mybaits.customwrapper.CriteriaQuery;
import com.gp.learn.ssm.base.core.mybaits.model.ListModel;
import com.gp.learn.ssm.base.core.mybaits.model.ResultBody;

import java.util.List;

/**
 * 扩展自定义List拦截器
 */
public interface ListInterceptor<T> {

    /**
     * 条件验证
     *
     * @return
     */
    default ResultBody validate(CriteriaQuery<T> cq, EntityMap params) {
        return ResultBody.ok();
    }

    /**
     * 条件预处理
     *
     * @return
     */
    default void prepare(CriteriaQuery<T> cq, ListModel model, EntityMap params) {

    }


    /**
     * 扩展返回结果
     *
     * @param result 分页结果集
     * @param extra  扩展数据存储
     * @return
     */
    default void complete(CriteriaQuery<T> cq, List<EntityMap> result, EntityMap extra) {

    }


}
